<?php
/**
 * 手机短信操作类
 * @author chenhao
 * @since 2009-12-23
 * @link http://www.22cn.cn/
 * =================================================
 * 说明：本类采用成都凌凯软件科技有限公司短信接口开发，请确保
 * 你有访公司短信接口的帐号及密码
 * =================================================
 * 示例：
 * require_once('inc/sms.php');
 * $sms = new sms('MLKJ00001','466643');
 * $result = $sms->Send('13547849983','这里，不对吗？this is a test');
 * if(0 == $result)
 * {
 *     echo "发送成功! 发送时间".date("Y-m-d H:i:s");
 * }
 * else
 * {
 *     echo "发送失败, 错误提示代码: ".$result;
 * }
 */
require('cls_iconv.php'); //加载编码转换类
class sms {
	private $_uid = '';
	private $_password = '';
	public  $send_message = '';
	public  $telphone = array(); //手机群发
	public  $error_message = array();
	
	//构造函数
	public function __construct($uid,$password) {
		$this->_uid = $uid;
		$this->_password = $password;
	}
	//短信注册
	public function Reg($contactInfo) {
		$arr = array('CorpName','LinkMan','Tel','Mobile','Memo');
		if (!is_array($contactInfo) || empty($contactInfo)) {
			$this->error_message['message'] = '注册信息不能为空';
			return $this->errMsg();
		}
		$contactKey = array_keys($contactInfo);
		foreach ($contactKey AS $value) {
			if(!in_array($value,$arr)) {
				$this->error_message['message'] = '注册参数传递有误';
				return $this->errMsg();
				break;
			}
		}
		$regUrl = "http://mb345.com/WS/Reg.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."&CorpName=".urlencode($contactInfo['CorpName'])."&LinkMan=".$contactInfo['LinkMan']."&Tel=".$contactInfo['Tel']."&Mobile=".$contactInfo['Mobile']."&Email=".$contactInfo['Email']."&Memo=".$contactInfo['Memo']."";
		if (($re = $this->getResult($regUrl)) !== false) {
			return $re; //返回 0成功 -1帐号存在 -2其它错误 -3帐号及密码有误
		}
		else {
			$this->error_message['message'] = '注册失败';
			return $this->errMsg();
		}
	}
	//更改密码
	public function UpdPwd($newPwd) {
		$UpdPwdurl = "http://mb345.com/WS/UpdPwd.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."&NewPwd=".$newPwd."";
		return @file_get_contents($UpdPwdurl); //返回 0：密码修改成功；-1、帐号未注册；-2、其他错误；-3
	}
	/**
	 * 修改注册信息
	 *
	 * @param array $contactInfo //注册信息数组
	 * @return 返回 0：修改成功；-1、帐号未注册；-2、其他错误；-3、密码错误
	 */
	public function UpdReg($contactInfo) {
		$arr = array('CorpName','LinkMan','Tel','Mobile','Memo');
		if (is_array($contactInfo) && count($contactInfo)>0) {
			$contactKey = array_keys($contactInfo);
			foreach ($contactKey AS $value) {
				if(!in_array($value,$arr)) {
					$this->error_message['message'] = '修改注册参数传递有误';
					return $this->errMsg();
					break;
				}
			}
			$UpdRegUrl = "http://mb345.com/WS/UpdReg.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."&CorpName=".urlencode($contactInfo['CorpName'])."&LinkMan=".urlencode($contactInfo['LinkMan'])."&Tel=".urlencode($contactInfo['Tel'])."&Mobile=".$contactInfo['Mobile']."&Email=".urlencode($contactInfo['Email'])."&Memo=".urlencode($contactInfo['Memo'])."";
			return file_get_contents($UpdRegUrl);
		}
		else {
			$this->error_message['message'] = '修改注册信息不能为空';
			return $this->errMsg();
		}
	}
	//查询查询余额
	public function SelSum() {
		$SelSumUrl = "http://mb345.com/WS/SelSum.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."";
		return @file_get_contents($SelSumUrl); //返回 >=0，剩余条数；-1、帐号未注册；-2、其他错误；-3、密码错误
	}
	/**
	 * 发送短信
	 *
	 * @param int $telphone //手机号码
	 * @param string $content //短信内容
	 * @param string $cell //字帐号
	 * @param time $sendTime //定时发送时间
	 * @return 返回 0，发送成功；-1、帐号未注册；-2、其他错误；-3、密码错误；-4、手机号格式不对；-5、余额不足；-6、定时发送时间不是有效的时间格式；
	 */
	public function Send($telphone,$content,$cell=null,$sendTime=null) {
		$convert = new Chinese();
		$content = $convert->Convert('UTF-8', "GB2312", $content);
		$sendUrl = "http://mb345.com/WS/Send.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."&Mobile=".$telphone."&Content=".urlencode($content)."&Cell=".$cell."&SendTime=".$sendTime."";
		return @file_get_contents($sendUrl);
	}
	/**
	 * 短信群发
	 *
	 * @param array $Mobile //手机号码数组
	 * @param string $content //信息内容
	 * @param string $cell //字帐号（可为空）
	 * @param time $sendTime //定时发送时间(可为空)
	 * @return 返回 0，发送成功进入审核阶段；1、直接发送成功；-1、帐号尚未注册；-2、其他错误；
	 * -3、帐号或则密码错误；-4、一次提交信息不能超过600个手机号码；-5、企业号帐户余额不足，请先
	 * 充值再提交短信息！；-6、定时发送时间不是有效的时间格式；-7、发送短信内容包含黑字典关键字；
	 * -8、发送内容需在3到250个字之间；-9、 发送号码为空
	 */
	public function BatchSend($Mobile,$content,$cell=null,$sendTime=null) {
		$convert = new Chinese();
		$content = $convert->Convert('UTF-8', "GB2312", $content);
		if (is_array($Mobile) && count($Mobile)<=600) { //最多一次发送600个号码
			$allMobile = '';
			foreach ($Mobile AS $value) {
				$allMobile .= $value.','; //将所有手机号码以","分隔成字符串
			}
			$batchsendUrl = "http://mb345.com/WS/BatchSend.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."&Mobile=".$allMobile."&Content=".urlencode($content)."&Cell=".$cell."&SendTime=".$sendTime."";
			return @file_get_contents($batchsendUrl);
		}
	}
	/**
	 * 群发短信返回错误报告
	 *
	 * @return 返回格式：||手机号#返回内容#提交时间#定时时间#子号||手机号#返回内容#提交时间#定时时间#子号……
	 */
	public function GetReportFail() {
		$reportUrl = "http://mb345.com/WS/GetReportFail.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."";
		return @file_get_contents($reportUrl); //输出参数：字符串，如果无返回报告返回'全部正确提交,无错误返回报告'；-1、帐号未注册；-2、其他错误；-3、密码错误
	}
	/**
	 * 接收短信
	 *
	 * @return 返回格式：||手机号#上行内容#发送时间#子号||手机号#上行内容#发送时间#子号……
	 */
	public function Get() {
		$getSmsUrl = "http://mb345.com/WS/Get.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."";
		return  @file_get_contents($getSmsUrl); //输出参数：字串，具体字串；-1、帐号未注册；-2、其他错误；-3、密码错误
	}
	/**
	 * 帐号充值
	 *
	 * @param string $CardNo 充值卡号
	 * @param string $CardPwd 卡号密码
	 * @return 0，充值成功；-1、帐号未注册；-2、其他错误；-3、密码错误；-7、充值失败（可能原因：充值卡号密码不匹配或者卡已经被使用）
	 */
	public function ChargeUp($CardNo,$CardPwd) {
		$chargeUpUrl = "http://mb345.com/WS/ChargeUp.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."&CardNo=".$CardNo."&CardPwd=".$CardPwd."";
		return  @file_get_contents($chargeUpUrl);
	}
	/**
	 * 注销
	 *
	 * @return 0，注销成功；-1、帐号未注册；-2、其他错误；-3、密码错误
	 */
	public function UnReg() {
		$UnRegUrl = "http://mb345.com/WS/UnReg.aspx?CorpID=".$this->_uid."&Pwd=".$this->_password."";
		return  @file_get_contents($UnRegUrl);
	}
	//错误提示信息
	public function errMsg($str = '') {
		if ($str) {
			echo "<b>System info</b>:$str\n\n<br /><br />";
		}
		else {
			echo "ERR:";
			print_r($this->error_message);
		}
		exit;
	}
}
?>